package com.sj;

import com.sj.bean.Bean2;
import com.sj.property.Book;
import com.sj.property.Person;
import com.sj.property.PropertyDemo1;
import com.sj.property.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestIOC {

    @Test
    public void testUser() {
        //1 加载spring配置文件，根据创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        //2 得到配置创建的对象
//        User user = (User) context.getBean("user");
//        System.out.println(user);
//        user.add();
//
//        User user2 = (User) context.getBean("user2");
//        System.out.println(user2);
//
//        Bean2 bean2 = (Bean2) context.getBean("bean2");
//        System.out.println(bean2);
//
//        Bean2 bean22 = (Bean2) context.getBean("bean22");
//        System.out.println(bean22);

        //属性注入：set方法注入、有参数构造注入。
//        PropertyDemo1 demo1 = (PropertyDemo1) context.getBean("demo");
//        demo1.test1();
//        Book book = (Book) context.getBean("book");
//        book.demobook();

        //注入对象类型属性
//        UserService userService = (UserService) context.getBean("userService");
//        userService.add();

        //P名称空间注入
//        Person person = (Person) context.getBean("person");
//        person.test1();

        //注入复杂类型属性
        Person person2 = (Person) context.getBean("person2");
        person2.test1();
    }
}
